﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using ttt.frontend;
using ttt.prozesse;
using ttt.regelwerk;

namespace ttt.app
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // Build
            var repo = new Dictionary<string, object>();
            var frontend = new WinSpielbrett();

            var regeln = new Regelwerk();
            var spielstandErmitteln = new Spielstand_ermitteln();

            var featureNeuesSpiel = new Neues_Spiel_beginnen(repo);
            var featureSpielerZieht = new Spieler_zieht(repo, regeln, spielstandErmitteln);

            // Bind
            var entryPoint = new FeatureBinder(repo, frontend, featureNeuesSpiel, featureSpielerZieht);

            // Run
            entryPoint.Run(args);
        }
    }
}
